请问语句line[len - 1] = '\0';是不是多余了?

来源:百度知道 编辑:UC知道 时间:2024/07/08 18:44:57
程序如下
/*读取输入行*/
int readline (char *lineptr[],int maxlines)
{
int len,nlines;
char *p,line [maxlen];
nlines = 0;
while ((len = getline(line,maxlen)) > 0 )
if (nlines >= maxlines || (p = alloc(len)) == null)
return -1;
else {
line[len - 1] = '\0';
strcpy(p,line);
lineptr[nlines++] = p;
}
teturn lines;
}

请问int readline (char *lineptr[],int maxlines)
{
int len,nlines;
char *p,line [maxlen];
nlines = 0;
while ((len = getline(line,maxlen)) > 0 )
if (nlines >= maxlines || (p = alloc(len)) == null)
return -1;
else {
line[len - 1] = '\0';
strcpy(p,line);
lineptr[nlines++] = p;
}
teturn lines;
}
不好意思,程序不小心复制了两遍。

你看看这getline怎么处理的吧(在读到maxlen的时候会不会在后面填0?)。。无论如何我觉得 line[len-1]的做法不是很好, 如果getline确实不会再后面填写0, 你可以分配的时候多分配一格空间, 事先写好0, 这样可以确保字符串成立, 并且不会因为数据稍多就丢掉一个

另外你这里还有一点问题是,用alloc是不对的,要用malloc。 alloc分配的空间在函数返回后自动free掉。 现在alloc基本上没什么用了

\0 是空字符 你说多余么?